home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 1.iso
/
ARGONET
/
PD
/
PROGRAMMING
/
DESKLIBC
/
SOURCES.ZIP
/
DeskLib
/
!DLSources
/
Libraries
/
Pane2
/
c
/
PaneOpenH
< prev
next >
Wrap
Text File
|
1995-08-23
|
2KB
|
70 lines
/*
#### # # # #
# # # # # The FreeWare C library for
# # ## ### # # # # ### RISC OS machines
# # # # # # # # # # # ___________________________________
# # #### ### ## # # # #
# # # # # # # # # # Please refer to the accompanying
#### ### #### # # ##### # ### documentation for conditions of use
________________________________________________________________________
File: Pane2.PaneOpenH.c
Author: Copyright © 1995 Andrew Sellors.
Version: 1.04 (4th August 1995)
Purpose: Handles windows with panes.
*/
#include "DeskLib:Pane2.h"
#include "Pane2Defs.h"
#include "Desklib:Event.h"
#include "DeskLib:Template.h"
#include "Desklib:EventMsg.h"
#include "Desklib:Error.h"
/******************************************************************************/
extern BOOL PaneOpenEventHandler(event_pollblock *event, void *reference)
{
/*
* event handler for panes that can be moved (!ArtWorks style)
* records movement and updates paneoffset
*/
window_state panestate;
window_state mainstate;
pane_listelement *paneelement = reference;
Wimp_OpenWindow(&(event->data.openblock));
/*
* get positions of main and pane windows
*/
Wimp_GetWindowState(paneelement->panewindow, &panestate);
Wimp_GetWindowState(paneelement->mainwindow, &mainstate);
/*
* update pane offset
*/
if(paneelement->paneflags.data.mainright)
paneelement->paneoffset.x = panestate.openblock.screenrect.min.x -
mainstate.openblock.screenrect.max.x;
else
paneelement->paneoffset.x = panestate.openblock.screenrect.min.x -
mainstate.openblock.screenrect.min.x;
if(paneelement->paneflags.data.maintop) /* pane fixed to top of window */
paneelement->paneoffset.y = mainstate.openblock.screenrect.max.y;
else /* pane fixed to bottom of window */
paneelement->paneoffset.y = mainstate.openblock.screenrect.min.y;
if(paneelement->paneflags.data.panetop) /* pane fixed using top of pane */
paneelement->paneoffset.y -= panestate.openblock.screenrect.max.y;
else /* pane fixed using bottom of pane */
paneelement->paneoffset.y -= panestate.openblock.screenrect.min.y;
return(TRUE);
}